Skip to content

dgb(M3): real bind_aux_doge_parsers() body — ODR-use DGB-parent AuxPoW contracts in prod objlib - #400

Merged
frstrtr merged 2 commits into
masterfrom
dgb/m3-bind-aux-doge-parsers
Jun 24, 2026
Merged

dgb(M3): real bind_aux_doge_parsers() body — ODR-use DGB-parent AuxPoW contracts in prod objlib#400
frstrtr merged 2 commits into
masterfrom
dgb/m3-bind-aux-doge-parsers

Conversation

@frstrtr

@frstrtr frstrtr commented Jun 24, 2026

Copy link
Copy Markdown
Owner

M3 makes the AUX_DOGE seam non-hollow: bind_aux_doge_parsers() gets a real callable binding that ODR-uses parse_aux_headerdgb::coin::MutableTransaction / CAuxPowdgb::coin::MutableTransaction in the PRODUCTION dgb object library (previously decl-only / test-fixture-only).

Scope discipline:

  • AUX_DOGE-fenced (#ifdef AUX_DOGE) — default Scrypt-only standalone build is byte-unchanged.
  • src/impl/doge CONSUMED, not modified (git diff touches zero doge-tree files).
  • DGB-tree-local: node.hpp seam body + new KAT only.

Evidence (local, -DCOIN_DGB=ON -DAUX_DOGE=ON):

  • Build+link of dgb_aux_doge_bind_parsers_test SUCCEEDS — proves parse_aux_header resolves/links in the prod lib (the ODR-use proof).
  • KAT 3/3 green: DGB_AuxDogeBindParsers BlobMatchesBuilder / BoundParserConsumesDgbParentBlob / BoundParserAuxRoundTripsByteIdentical.
  • Registered in src/impl/dgb/test/CMakeLists.txt AND both build.yml --target arms (no ci: build test_dgb_subsidy in both Linux test jobs (fix master-red NOT_BUILT) #143 NOT_BUILT sentinel).

Parity: p2pool-merged-v36. NO self-merge — integrator runs the merge-gate.

frstrtr added 2 commits June 24, 2026 02:46
Replace the slice-#3 forward-decl seam with the real shared-module
includes (impl/doge/coin/auxpow.hpp + dgb transaction + dgb-local
aux_doge_parent_traits) so the DGB-parent AuxPoW template emissions are
ODR-used in the production dgb object library, not merely in fixtures.

bind_aux_doge_parsers() now assigns m_aux_doge_parser to a real callable
driving parse_aux_header<PackStream, dgb::coin::MutableTransaction>(),
forcing emission of parse_aux_header<dgb>/CAuxPow<dgb> in prod. New KAT
aux_doge_bind_parsers_test drives a canonical DGB-parent blob through the
bound member. AUX_DOGE-fenced; Scrypt-only build byte-unchanged; src/impl/
doge consumed-not-modified. Registered in CMake + both build.yml arms.
The bind test is registered in the default COIN_DGB build arm too (build.yml
allowlist, both arms) so the target is never a NOT_BUILT sentinel. But two of
its cases call node.bind_aux_doge_parsers()/aux_doge_parser(), which are
#ifdef AUX_DOGE members of dgb::coin::Node and do not exist in the default
Scrypt-only arm. That made the default-arm Build-tests step fail to compile.

Fence those two cases (BoundParserConsumesDgbParentBlob,
BoundParserAuxRoundTripsByteIdentical) behind #ifdef AUX_DOGE. The
BlobMatchesBuilder self-consistency case touches only the header-only shared
templates, so it still runs in both arms. Default arm: 1/1; +AUX_DOGE: 3/3.
@frstrtr
frstrtr merged commit b0a92ad into master Jun 24, 2026
33 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant